home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / CRIBBAGE.PAK / CARDDISP.H < prev    next >
C/C++ Source or Header  |  1997-05-06  |  3KB  |  89 lines

  1. //--------------------------------------------------------------------------
  2. // Turbo Cribbage -- Copyright (c) 1995, Borland International
  3. //--------------------------------------------------------------------------
  4. #ifndef CARDDISP_H
  5. #define CARDDISP_H
  6.  
  7. #include <owl/window.h>
  8. #include <owl/vbxctl.h>
  9. #include "mhcd2001.h"
  10. #include "cards.h"
  11. #include "cribbage.rh"
  12.  
  13. //  WM_CARD_SELECTED is sent to the parent of a TCardDisplay, when
  14. //  a card is selected.
  15. //
  16. //  wparam = the id of the card display clicked on
  17. //  lparam = the index of the card clicked on
  18. //
  19. #define WM_CARD_SELECTED  WM_USER+1
  20.  
  21. // class TCardDisplay -- derived from TCardGroup, and TWindow.  It is a
  22. // card group which can be displayed as a control in a window.
  23. //
  24. class TCardDisplay: public TWindow, public TCardGroup {
  25.   public:
  26.     TCardDisplay(TWindow* parent, int aId, int x, int y, int w, int h,
  27.                  int aBorderSize,
  28.                  int aMaxCards, TPoint *cardPositions, BOOL aRectangle = false,
  29.                  const char *aLabel = 0, TPoint aLabelPos = TPoint(0,0));
  30.     ~TCardDisplay() {
  31.       delete[] cardPos;
  32.       delete[] cardvbx;
  33.     }
  34.     void Paint(TDC&, bool, TRect&);
  35.     void SetupWindow();
  36.     void FaceUp(int index, BOOL faceUp) {
  37.       cards[index]->faceUp = faceUp;
  38.       Show(index, cards[index]);
  39.     }
  40.     void SetCardPosition(int index, TPoint& pos) {
  41.       cardPos[index]=pos;
  42.       cardvbx[index]->MoveWindow(pos.x, pos.y, 71, 95);
  43.     }
  44.     void Show(int index, TCard* card) {
  45.       cardvbx[index]->SetPropCardBack(ENUM(card->backStyle));
  46.       if (card->faceUp)
  47.         cardvbx[index]->SetPropValue(ENUM(card->rank));
  48.       else
  49.         cardvbx[index]->SetPropValue(0);
  50.       cardvbx[index]->SetPropSuit(ENUM(card->suit));
  51.       cardvbx[index]->ShowWindow(SW_SHOW);
  52.     }
  53.     void SetLabel(const char *text) {
  54.       strncpy(label, text, 20);
  55.       label[19]=0;
  56.       Invalidate();
  57.     }
  58.     int Insert(TCard* card, BOOL faceUp) {
  59.       assert(card!=0);
  60.       card->faceUp = faceUp;
  61.       int index = TCardGroup::Insert(card);
  62.       Show(index, card);
  63.       return index;
  64.     }
  65.     TCard* Remove(int pos=0);
  66.     TCard& operator[](int index) {
  67.       return *cards[index];
  68.     }
  69.     LRESULT VBXEventHandler(WPARAM wparam, LPARAM lparam) {
  70.       VBXEVENT FAR *vbxEvent = (VBXEVENT FAR *)lparam;
  71.       if (vbxEvent->EventIndex == Event_MhCardDeck_Click)
  72.         Parent->PostMessage(WM_CARD_SELECTED, id, vbxEvent->ID);
  73.       return true;
  74.     }
  75.  
  76.   private:
  77.     TVbxMhCardDeck** cardvbx;
  78.     BOOL   rectangle;
  79.     char   label[20];
  80.     TPoint labelPos;
  81.     int    borderSize;
  82.     TPoint*cardPos;
  83.     int    id;
  84.  
  85.   DECLARE_RESPONSE_TABLE(TCardDisplay);
  86. };
  87.  
  88. #endif // CARDDISP_H
  89.